如果資料儲存只是把資料存進去硬碟裡,那就有點單調了,不如我們來加點把戲吧!
資料要存,就要把它存好,萬一硬碟不小心壞了怎麼辦?
於是有了RAID卡。RAID中文是容錯式硬碟陣列,RAID卡是一個硬體設備,可以理解為它能將多個硬碟組合在一起,利用虛擬儲存技術,形成一個硬碟陣列,用來提升儲存空間和製造冗余。
分散式儲存很多idea就是從RAID來的,只是RAID是提升機櫃與機櫃之間的可靠性,而一般來說的分散式儲存是透過網路串連不同的儲存裝置,更加靈活。
常見的RAID層級有RAID 0、RAID 1、RAID 5、RAID 6,本篇只介紹上述幾個基礎的RAID架構,架構圖都是來源於維基百科。
下圖我們可以看到兩個大圓柱,其中一個大圓柱,例如Disk0,就是一塊硬碟,一個小圓柱,例如A1,就是硬碟中的一個Block,我們可以把多個Disk串連,從上層系統來看就是一塊超大硬碟。
對於RAID 0,資料寫入的方式會把資料分割然後同時寫入A1、A2,寫完換A3、A4同時寫。所以當一塊硬碟壞了,全部都壞了。所以RAID 0最簡單,最快,但是也最不安全,因為它不會做任何備份。
RAID 1和RAID 0類似,但是寫入會一次寫入兩份,一段資料過來,先寫兩份到各自左右兩邊的A1,A1寫完再寫A2。所以RAID 1的資料寫入性能是RAID 0的一半,不過只要一個硬碟活著資料都還在。RAID 1可以並聯更多硬碟以增加可靠性,只是相應的寫入效能會更慢。
RAID 0速度快但不可靠,RAID 1可靠但是硬碟利用率和效能差。所以RAID 1往後都在找一種儲存效能、可靠性和成本兼顧的方式,直到RAID 5才漸漸被市場所接受。
如上圖所示,RAID 5至少需要三塊硬碟,上圖是四塊硬碟的架構。那RAID 5怎麼存資料呢?從第一排開始,資料來了,一樣先存進去A1、A2、A3,然後我們看到了A_p,他是A1、A2、A3的奇偶校驗資料,這樣當一塊硬碟掛了,可以透過奇偶校驗復原資料。
我們假設A1, A2, A3上的資料分別為1, 3, 5,透過奇偶校驗,1 XOR 3 XOR 5 = 7,A_p設置為7。
如果A2不小心壞了,要復原資料,只需要把剩餘的都做XOR計算就能復原資料,1 XOR 5 XOR 7 = 3。
和RAID 0相比,寫入速度較慢,讀取速度差不多,可靠性好很多。
和RAID 1相比,需要更多硬碟才能保證可靠度,但是硬碟的利用率高很多,寫入速度也較快。
RAID 6和RAID 5非常相似,唯一的差別就是需要比RAID 5多一塊硬碟存放第二個奇偶校驗資料,如下圖所示。
兩個的奇偶校驗演算法不同,所以RAID 6至少需要四塊硬碟,可以容許兩塊硬碟損壞。
更多vSAN相關的知識,歡迎追蹤我的部落格: https://kaichiachen.github.io/2023/05/10/vsan/storage_raid_overview/